<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Login extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('act_model');
        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->library('session');
        $this->load->library('encrypt');
    }

    function goRegistrar() {
        $this->load->view('registroInicio');
    }

    public function goLogin($msg = NULL) {
        $data['msg'] = $msg;
        $this->load->view('login', $data);
    }

    public function goPared() {
        $this->load->controller('pared/');
    }

    public function submit() {
        echo "esteee";
        // Obtenemos los campos del formulario
        $uname = $this->input->post('username');
        $pwd = $this->input->post('password');

        // Cargamos el modelo que se encarga de esta interaccion
        $this->load->model('user_model');
        $existe = $this->user_model->login($uname, $pwd);

        // Si existe el usuario , determinara si carga la vista de administrador
        // o si carga la vista de un usuario normal
        if ($existe == TRUE) {

            $EsAdmin = $this->funciones_model->esAdmin($uname);
            if ($EsAdmin == TRUE) {
                $this->funciones_model->goParedAdmin();
            } else {

                $EstaHabilitado = $this->user_model->esHab($uname);
                
                if ($EstaHabilitado == TRUE) {
                    $regCompleto = $this->user_model->registroCompleto($uname);

                    if ($regCompleto == FALSE) {
                        $this->load->view('CompletarRegistro');
                    } else {
                        $this->funciones_model->goParedUsuario();
                    }
                } else {
                    echo $EstaHabilitado;
                    $this->funciones_model->goParedUsuarioDeshabilitado();
                }
            }
        } else {
            // Si no existe el usuario muestra un mensaje
            $msg = '<font color=red>Datos inválidos : email y/o password.</font><br />';
            $this->load->helper('url');
            $this->goLogin($msg);
        }
    }

    // Se direcciona a la pared del administrador, difiera de la pared normal
    // de un usuario porque posee opciones como "ver log"
    public function goParedAdmin() {
        $email = $this->session->userdata('email');
        $this->load->model('pizarra_model');
        $data['pizarras'] = $this->pizarra_model->obtenerPizarras($email);
        $this->load->view('mipared', $data);
    }

    // Se direcciona a la pared del Usuario
    public function goParedUsuario() {
        $email = $this->session->userdata('email');
        $this->load->model('pizarra_model');
        $data['pizarras'] = $this->pizarra_model->obtenerPizarras($email);
        $this->load->view('miparedUsuario', $data);
    }

    // Metodo que retorna true si el usuario que se encuentra logueado es un
    // administrador
    public function esAdmin() {
        $uname = $this->session->userdata('email');
        $this->load->model('user_model');
        return $this->user_model->esAdmin($uname);
    }

    // Funcion que se encarga de registrar un usuario, obteniendo los datos
    // del formulario y enviandosela al modelo.
    public function registrar() {
        $this->load->helper('form');
        $datos = array(
            'email' => $this->input->post('username'),
            'password' => $this->input->post('password'),
            'alias' => $this->input->post('alias'),
            'nombres' => $this->input->post('nombre'),
            'apellidos' => $this->input->post('apellido'),
            'fecha_nacimiento' => $this->input->post('fecha_nacimiento'),
            'direccion' => $this->input->post('direccion'),
            'idioma_sistema' => $this->input->post('idioma'),
            'registro_completo' => '1'
        );
        $this->load->model('user_model');
        $this->user_model->agregar($this->input->post('username'), $datos);
        $this->load->view('principal');
    }

}
